In modern software development, many applications are written to execute within a managed runtime environment, such as the MICROSOFT® .NET Framework. Managed runtime environments serve as a way to allow applications access to system resources, enforce security policies, etc. A managed runtime environment accomplishes this by creating “partitioned process spaces” wherein an application is executed. A partitioned process space allows an application to execute in such a manner that it is isolated from any other partitioned spaces in the process that the computer may be executing at the time. In the MICROSOFT® .NET Framework, these partitioned process spaces are called “AppDomains”.
A problem arises when an application is executed in one partitioned process space and the content is required to execute in another partitioned process space. Given the isolation and other rules governing managed runtime environments discussed earlier, the application will not be able to communicate with the content in the different partitioned process space, nor will the content be shown as part of the application.